home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / pasprog.EXE / DISASDEN.PAS < prev    next >
Pascal/Delphi Source File  |  1980-01-10  |  3KB  |  123 lines

  1. program disasden;
  2. {
  3.  
  4.  (c)1995 GoRGoN ltd.
  5.  
  6.  Demonstrates unit DISAS386
  7.  
  8. }
  9. uses disas386;
  10.  
  11. procedure DisasMe(x:pointer);
  12. begin
  13.    byte(x):=1;
  14.    word(x):=2;
  15.    x:=pointer($ABCD1234);
  16.  
  17.    asm
  18.       mov ax,word(x)
  19.  
  20.       db 66h{operand size prefix}
  21.       mov ax,word(x);
  22.  
  23.       {all 386 instructions supported}
  24.       db 66h;mov cx,ax
  25.       db 66h;lea si,[bx+di+$123]
  26.  
  27.       db 0d4h {AAM}
  28.       db 0ah
  29.  
  30.       db 0d4h {Undocumented feature of AAM not supported!}
  31.       db 05h
  32.  
  33.       db 0,0
  34.  
  35.       db 0fh;db 05h;{loadall}
  36.  
  37.       db 0fh;db 0bah;db 45 {bts}
  38.  
  39.       db 0,0,0,0,0,0,0
  40.    end;
  41. end;
  42.  
  43. begin
  44.  
  45.   WriteLn('20 Lines Disassembly of procedure DisasMe');
  46.   WriteLn('────────────────────────────────────────────');
  47.  
  48.   disasptr(@DisasMe,20);
  49.  
  50.   WriteLn('Press any key to continue');
  51.   asm xor ax,ax;int 16h;end;
  52.   FullDisas:=False;
  53.   WriteLn;
  54.   WriteLn('Now FullDisas is ',FullDisas);
  55.   WriteLn('────────────────────────────────────────────');
  56.  
  57.   disasptr(@DisasMe,20);
  58.  
  59.   WriteLn('Press any key to continue');
  60.   asm xor ax,ax;int 16h;end;
  61.   FullDisas:=TRUE;
  62.   WriteLn;
  63.   WriteLn('Now FullDisas is ',FullDisas,', Clipping to 35 chars');
  64.   WriteLn('────────────────────────────────────────────');
  65.  
  66.   disasptrl(@DisasMe,20,35);
  67.  
  68.   WriteLn;
  69.   WriteLn('Press any key to continue');
  70.   asm xor ax,ax;int 16h;end;
  71.   WriteLn;
  72.   WriteLn('Press any key to Disassembly Line by Line (5 more lines)');
  73.   WriteLn('────────────────────────────────────────────');
  74.  
  75.   Disas(Seg(DisasMe),Ofs(DisasMe));
  76.  
  77.   WriteLn('   ',dStr);
  78.   asm xor ax,ax;int 16h;end;
  79.  
  80.   DisasNext;
  81.  
  82.   WriteLn(' 1 ',dStr);
  83.   asm xor ax,ax;int 16h;end;
  84.  
  85.   DisasNext;
  86.  
  87.   WriteLn(' 2 ',dStr);
  88.   asm xor ax,ax;int 16h;end;
  89.  
  90.   DisasNext;
  91.  
  92.   WriteLn(' 3 ',dStr);
  93.   asm xor ax,ax;int 16h;end;
  94.  
  95.   DisasNext;
  96.  
  97.   WriteLn(' 4 ',dStr);
  98.   asm xor ax,ax;int 16h;end;
  99.  
  100.   DisasNext;
  101.  
  102.   WriteLn(' 5 ',dStr);
  103.   WriteLn;
  104.   WriteLn('Press any key to Disassembly same instruction once more');
  105.   WriteLn('────────────────────────────────────────────');
  106.   asm xor ax,ax;int 16h;end;
  107.  
  108.   io:=oldio;
  109.   DisasNext;
  110.  
  111.   WriteLn('   ',dStr);
  112.   WriteLn;
  113.   WriteLn('is   = "',hxw(is),'h"');
  114.   WriteLn('io   = "',hxw(io),'h"');
  115.   WriteLn('inst = "',inst,'"');
  116.   WriteLn('pist = "',pist,'"');
  117.   WriteLn('list = "',list,'"');
  118.   WriteLn('o1st = "',o1st,'"');
  119.   WriteLn('o2st = "',o2st,'"');
  120.   WriteLn;
  121.   WriteLn('Press any key to exit');
  122.   asm xor ax,ax;int 16h;end;
  123. end.